package com.qst.order.domain;

import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.fasterxml.jackson.annotation.JsonRawValue;
import lombok.Data;
import org.apache.ibatis.type.JdbcType;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Map;

/**
 * 购物车实体类
 * 对应数据库表：t_cart
 */
@TableName("t_cart")
@Data
public class Cart {

    /**
     * 购物车ID
     * 主键自增
     */
    @TableId(type = IdType.AUTO)
    private Integer cartId;

    /**
     * 用户ID
     */
    @TableField("user_id")
    private Integer userId;

    @TableField(exist = false)
    private String actionType;//  添加购物车或者直接购买

    /**
     * 商品ID
     */
    @TableField("product_id")
    private Integer productId;

    /**
     * 商品名称
     * 注意：数据库表中该字段定义为int，实际业务中应改为varchar
     */
    @TableField("product_name")
    private String productName;

    /**
     * 购买数量
     */
    @TableField("quantity")
    private Integer quantity;

    /**
     * 商家ID
     */
    @TableField("merchant_id")
    private Integer merchantId;

    /**
     * 商品单价
     */
    @TableField("price")
    private BigDecimal price;

    /**
     * 商品规格
     * 存储JSON格式字符串
     */

    @TableField(value = "specs", jdbcType = JdbcType.VARCHAR)
    private String specs;

    @TableField(exist = false) // 不存入数据库
    private Map<String, String> specsTemp; // 接收前端的JSON对象

    /**
     * 创建时间
     * 自动填充：插入时填充
     */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 更新时间
     * 自动填充：插入和更新时填充
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;


    @TableField("image")
    private String image;

    // 新增：解析后的规格Map（不存入数据库）
    @TableField(exist = false) // 标识该字段不在数据库中
    private Map<String, String> specsMap;


}
    